//package com.uwo.commons.kits;
//
//import org.springframework.data.redis.core.*;
//
//import java.util.List;
//import java.util.Set;
//import java.util.concurrent.TimeUnit;
//
///**
// * redis 工具类
// * @author hao.yan
// */
//public class RedisKits {
//
//    /**
//     * redis key,String
//     * @param redisTemplate
//     * @param key
//     * @param <T>
//     * @return
//     */
//    private static <T> BoundValueOperations<String, T> getBoundValueOperations(RedisTemplate<String, T> redisTemplate, String key){
//        return redisTemplate.boundValueOps(key);
//    }
//
//    public static <T> void setBoundValue(RedisTemplate<String, T> redisTemplate, T entity, String key, long timeout, TimeUnit timeUnit){
//        getBoundValueOperations(redisTemplate, key).set(entity, timeout, timeUnit);
//    }
//
//    public static <T> T getBoundValue(RedisTemplate<String, T> redisTemplate, String key){
//        return getBoundValueOperations(redisTemplate, key).get();
//    }
//
//    public static <T> void removeBoundValue(RedisTemplate<String, T> redisTemplate, String key){
//        redisTemplate.delete(key);
//    }
//
//    /**
//     * redis key,List
//     * @param redisTemplate
//     * @param key
//     * @param <T>
//     * @return
//     */
//    private static <T> BoundListOperations<String, T> getBoundListOperations(RedisTemplate<String, T> redisTemplate, String key){
//        return redisTemplate.boundListOps(key);
//    }
//
//    public static <T> void setBoundList(RedisTemplate<String, T> redisTemplate, T entity, String key){
//        getBoundListOperations(redisTemplate, key).rightPush(entity);
//    }
//
//    public static <T> List<T> getBoundList(RedisTemplate<String, T> redisTemplate, String key, long start, long end){
//        return getBoundListOperations(redisTemplate, key).range(start, end);
//    }
//
//    public static <T> void removeBoundList(RedisTemplate<String, T> redisTemplate, String key, long index, T entity){
//        getBoundListOperations(redisTemplate, key).remove(index, entity);
//    }
//
//    /**
//     * redis key,Hash
//     * @param redisTemplate
//     * @param key
//     * @param <String>
//     * @param <T>
//     * @return
//     */
//    private static <String, T> BoundHashOperations<String, String, T> getBoundHashOperations(RedisTemplate<String, T> redisTemplate, String key){
//        return redisTemplate.boundHashOps(key);
//    }
//
//    public static <T> T getBoundHash(RedisTemplate<String, T> redisTemplate, String key, String hKey){
//        return getBoundHashOperations(redisTemplate, key).get(hKey);
//    }
//
//    public static <T> void setBoundHash(RedisTemplate<String, T> redisTemplate, T entity, String key, String hKey){
//        getBoundHashOperations(redisTemplate, key).put(hKey, entity);
//    }
//
//    public static <T> void removeBoundHash(RedisTemplate<String, T> redisTemplate, String key, String hKey){
//        getBoundHashOperations(redisTemplate, key).delete(hKey);
//    }
//
//    /**
//     * redis key,Set
//     * @param redisTemplate
//     * @param key
//     * @param <String>
//     * @param <T>
//     * @return
//     */
//    private static <String, T> BoundSetOperations<String, T> getBoundSetOperations(RedisTemplate<String, T> redisTemplate, String key){
//        return redisTemplate.boundSetOps(key);
//    }
//
//    public static <T> Set<T> getBoundSet(RedisTemplate<String, T> redisTemplate, String key, Long count){
//        return getBoundSetOperations(redisTemplate, key).distinctRandomMembers(count);
//    }
//
//    public static <T> void setBoundSet(RedisTemplate<String, T> redisTemplate, String key, T ...entity){
//        getBoundSetOperations(redisTemplate, key).add(entity);
//    }
//
//    public static <T> void removeBoundSet(RedisTemplate<String, T> redisTemplate, String key){
//        getBoundSetOperations(redisTemplate, key).remove();
//    }
//
//
//    /**
//     * redis key,SortedSet
//     * @param redisTemplate
//     * @param key
//     * @param <String>
//     * @param <T>
//     * @return
//     */
//    private static <String, T> BoundZSetOperations<String, T> getBoundZSetOperations(RedisTemplate<String, T> redisTemplate, String key){
//        return redisTemplate.boundZSetOps(key);
//    }
//
//    public static <T> Set<T> getBoundZSet(RedisTemplate<String, T> redisTemplate, String key, Long start, Long end){
//        return getBoundZSetOperations(redisTemplate, key).range(start, end);
//    }
//
//    public static <T> void setBoundZSet(RedisTemplate<String, T> redisTemplate, String key, T entity, double score){
//        getBoundZSetOperations(redisTemplate, key).add(entity, score);
//    }
//
//    public static <T> void removeBoundZSet(RedisTemplate<String, T> redisTemplate, String key){
//        getBoundZSetOperations(redisTemplate, key).remove();
//    }
//
//}
